//
//  CZUserAccount.swift
//  weibo10
//
//  Created by apple on 16/5/14.
//  Copyright © 2016年 apple. All rights reserved.
//

import UIKit

class CZUserAccount: NSObject, NSCoding
{

    //用户授权的唯一票据
    var access_token: String?
    
    //access_token的生命周期，单位是秒数，基本数据类型不能使用  KVC找不到
    
    var expires_in: NSTimeInterval = 0
        {
        
    didSet
    {
        //过期时间
        expiresDate = NSDate(timeIntervalSinceNow: expires_in)
        
        }
    
    }
    
    //过期时间
    var expiresDate: NSDate?
    //授权用户ID 
    var uid: String?
    
    //用户昵称
    var screen_name: String?
    
    //用户头像地址（大图） 180 x 180
    var avatar_large: String?
    
    
    
    
    //通过字典创建模型
    init(dict: [String: AnyObject])
    {
        super.init()
        
        setValuesForKeysWithDictionary(dict)
        
    }
    override func setValue(value: AnyObject?, forKey key: String)
    {
        super.setValue(value, forKey: key)
        
    }
    
    override func setValue(value: AnyObject?, forUndefinedKey key: String)
    {
        CZPrint(items: "forUndefinedKey: \(key)")
        
    }
    
    
    //打印方法    使用description属性
  override  var description: String
        {
    
        get{
        
        return "用户账号: access_token \(access_token),expires_in: \(expires_in),uid: \(uid),expiresDate: \(expiresDate)"
        }
        
    }
    
    //MARK: - 解档
    
    required init?(coder aDecoder: NSCoder) {
        
        access_token = aDecoder.decodeObjectForKey("access_token") as? String
        
        //生产日期
        expires_in = aDecoder.decodeDoubleForKey("expires_in")
        //用户id
        uid = aDecoder.decodeObjectForKey("uid") as? String
        
        //到期的日期
        expiresDate = aDecoder.decodeObjectForKey("expiresDate") as? NSDate
        
        
        screen_name = aDecoder.decodeObjectForKey("screen_name") as? String
        avatar_large = aDecoder.decodeObjectForKey("screen_name") as? String
        
    }
    
    
        //归档
        func encodeWithCoder(aCoder: NSCoder)
        {
        aCoder.encodeObject(access_token,forKey: "access_token")
            
            aCoder.encodeDouble(expires_in, forKey: "expires_in")
            aCoder.encodeObject(uid, forKey: "uid")
            aCoder.encodeObject(expiresDate, forKey: "expiresDate")
        
        aCoder.encodeObject(screen_name,forKey: "screen_name")
        aCoder.encodeObject(avatar_large, forKey: "avatar_large")
       
    }
    
    
    
    }
    
    
    
    
    
    

